From: Florian Müllner Date: Thu, 17 May 2012 19:09:56 +0000 (+0200) Subject: bluetooth: Enforce a PIN length of 6 digits X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~6585 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=48d6eb168fa489ac34b16ae315c32210bdcc6f5a;p=gnome-shell.git bluetooth: Enforce a PIN length of 6 digits Bluetooth PINs are required to have 6 digits, so enforce that condition by making the PIN request notification's confirm button insensitive unless the entered PIN has the correct length. https://bugzilla.gnome.org/show_bug.cgi?id=651251 --- diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js index b9bba1036..2d3b9b84b 100644 --- a/js/ui/status/bluetooth.js +++ b/js/ui/status/bluetooth.js @@ -416,7 +416,8 @@ const PinNotification = new Lang.Class({ this._entry.connect('key-release-event', Lang.bind(this, function(entry, event) { let key = event.get_key_symbol(); if (key == Clutter.KEY_Return) { - this.emit('action-invoked', 'ok'); + if (this._canActivateOkButton()) + this.emit('action-invoked', 'ok'); return true; } else if (key == Clutter.KEY_Escape) { this.emit('action-invoked', 'cancel'); @@ -429,6 +430,12 @@ const PinNotification = new Lang.Class({ this.addButton('ok', _("OK")); this.addButton('cancel', _("Cancel")); + this.setButtonSensitive('ok', this._canActivateOkButton()); + this._entry.clutter_text.connect('text-changed', Lang.bind(this, + function() { + this.setButtonSensitive('ok', this._canActivateOkButton()); + })); + this.connect('action-invoked', Lang.bind(this, function(self, action) { if (action == 'ok') { if (this._numeric) { @@ -451,6 +458,11 @@ const PinNotification = new Lang.Class({ })); }, + _canActivateOkButton: function() { + // PINs have a fixed length of 6 + return this._entry.clutter_text.text.length == 6; + }, + grabFocus: function(lockTray) { this.parent(lockTray); global.stage.set_key_focus(this._entry);